'''

数据库被误删后  恢复数据过程中，  通过binlog把二进制日志转化成sql后， 这里的sql不能直接运行（会报一连串语法错误）

做法：  1、 去除注释和莫名其妙的注释和语句  仅仅保留一些sql
       2、 为每行添加分号结尾

我在运行的时候还是会遇到问题   比如你要更新一个内容，但是表中那条数据被我删了
解决：  正确更新方法 ，先提取所有insert  先运行   然后再执行update

  W 只写模式  重新创建文件
会把文件的内容删掉
## 省略掉  f.close()方法   加一个with
'''

import shutil, sys, os

darray = [
    "#",
    "/*!",
    "DELIMITER",
    "ROLLBACK",
    "BINLOG",
    "SET"
]

keepContent = [
    "insert",
    "INSERT",
    "update",
    "UPDATE"
]

def isKeep(line):
    for item in keepContent:
        if item in line:
            return True
    return False


# 临时用于获取insert的语句 先执行insert
linshi = [
    "insert into",
]
# "update posts set",
def isInArray(array, line):
    for item in array:
        if item in line:
            return True
    return False

# linshi
def isInArraylinshi(line):
    for item in linshi:
        if item in line:
            return True
    return False


if __name__ == '__main__':

    with open("mysql009.sql",mode="r",encoding="utf-8") as f:
        with open("fresult.txt", 'w',encoding="utf-8") as g:
            for line in f.readlines():
                if isKeep(line):  #if not isInArray(darray,line):# linshi  待会可删
                    if not isInArray(darray,line):
                        if "/* LOCK */" in line:
                            line = line.replace("/* LOCK */","")
                        g.write(line)